mirror of
https://github.com/OpenVoiceOS/OpenVoiceOS
synced 2025-06-05 22:19:21 +02:00
Merge remote-tracking branch 'origin/develop' into feature/wifi-setup
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Loading boot splash
|
||||
#
|
||||
|
||||
start() {
|
||||
printf "Loading boot splash ..."
|
||||
cat /dev/zero 1> /dev/fb0 2>/dev/null
|
||||
fbv -f -d 1 /opt/mycroft/splash/boot.png > /dev/null 2>&1
|
||||
echo "[OK]"
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $?
|
@@ -1,25 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Resize SD card
|
||||
#
|
||||
|
||||
start() {
|
||||
printf "Resize data partition ..."
|
||||
parted /dev/mmcblk0 unit % resizepart 2 yes 100% &&
|
||||
partprobe /dev/mmcblk0 &&
|
||||
sync &&
|
||||
resize2fs /dev/mmcblk0p2 &&
|
||||
chmod -x /etc/init.d/S00resize_sdcard &&
|
||||
echo "[OK]"
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $?
|
@@ -1,2 +0,0 @@
|
||||
modprobe snd-bcm2835
|
||||
#modprobe snd-usb-audio
|
@@ -1,4 +0,0 @@
|
||||
alsactl init
|
||||
amixer cset numid=3 1
|
||||
amixer sset PCM 95%
|
||||
|
@@ -1,47 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Prepare Mycroft software stack.
|
||||
#
|
||||
|
||||
start() {
|
||||
# set the right locale / language settings
|
||||
export LC_ALL=en_US.UTF-8
|
||||
export LANG=en_US.UTF-8
|
||||
export LANGUAGE=en_US.UTF-8
|
||||
|
||||
# Check if Mycroft log folders are present and if not
|
||||
# create those logging folders
|
||||
if [[ ! -w /var/log/mycroft/ ]] ; then
|
||||
# Creating needed folders
|
||||
printf "Creating /var/log/mycroft/ directory"
|
||||
if [[ ! -d /var/log/mycroft/ ]] ; then
|
||||
mkdir /var/log/mycroft/
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check for internet connectivity
|
||||
if ping -q -c 1 -W 1 1.1.1.1 >/dev/null 2>&1 ; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check if /.mycroft exist already and if not
|
||||
# create a symbolic link to /root/.mycroft
|
||||
if [[ ! -w /.mycroft/ ]] ; then
|
||||
# Creating .mycroft symlink
|
||||
printf "Creating /.mycroft/ symlink"
|
||||
if [[ ! -d /.mycroft/ ]] ; then
|
||||
ln -s /root/.mycroft /.mycroft
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $?
|
@@ -1,37 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Starts Mycroft services.
|
||||
#
|
||||
|
||||
start() {
|
||||
printf "Starting Mycroft services: "
|
||||
umask 077
|
||||
bash /usr/bin/start-mycroft.sh all
|
||||
echo "OK"
|
||||
}
|
||||
stop() {
|
||||
printf "Stopping Mycroft services: "
|
||||
bash /usr/bin/stop-mycroft.sh all
|
||||
echo "OK"
|
||||
}
|
||||
restart() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart|reload)
|
||||
restart
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $?
|
@@ -1,7 +1,17 @@
|
||||
{
|
||||
"play_wav_cmdline": "aplay -Dhw:0,0 %1",
|
||||
"play_mp3_cmdline": "mpg123 -a hw:0,0 %1",
|
||||
"ipc_path": "/ramdisk/mycroft/ipc/",
|
||||
"ignore_logs": ["enclosure.mouth.viseme", "enclosure.mouth.display"],
|
||||
"log_level": "INFO"
|
||||
"play_wav_cmdline": "aplay -Dhw:0,0 %1",
|
||||
"play_mp3_cmdline": "mpg123 -a hw:0,0 %1",
|
||||
"ipc_path": "/ramdisk/mycroft/ipc/",
|
||||
"enclosure": {
|
||||
"platform": "MycroftOS",
|
||||
"platform_build": "0.1.0"
|
||||
},
|
||||
"listener": {
|
||||
"mute_during_output": false
|
||||
},
|
||||
"skills": {
|
||||
"priority_skills": ["mycroft-pairing", "mycroft-volume"]
|
||||
},
|
||||
"ignore_logs": ["enclosure.mouth.viseme", "enclosure.mouth.display"],
|
||||
"log_level": "INFO"
|
||||
}
|
||||
|
3
buildroot-external/rootfs-overlay/etc/pip.conf
Normal file
3
buildroot-external/rootfs-overlay/etc/pip.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
[global]
|
||||
only-binary=:all:
|
||||
extra-index-url=https://www.piwheels.org/simple
|
@@ -29,10 +29,11 @@
|
||||
# Authentication:
|
||||
|
||||
#LoginGraceTime 2m
|
||||
PermitRootLogin yes
|
||||
PermitRootLogin no
|
||||
#StrictModes yes
|
||||
#MaxAuthTries 6
|
||||
#MaxSessions 10
|
||||
AllowUsers *@*
|
||||
|
||||
#PubkeyAuthentication yes
|
||||
|
||||
|
97
buildroot-external/rootfs-overlay/etc/sudoers
Normal file
97
buildroot-external/rootfs-overlay/etc/sudoers
Normal file
@@ -0,0 +1,97 @@
|
||||
## sudoers file.
|
||||
##
|
||||
## This file MUST be edited with the 'visudo' command as root.
|
||||
## Failure to use 'visudo' may result in syntax or file permission errors
|
||||
## that prevent sudo from running.
|
||||
##
|
||||
## See the sudoers man page for the details on how to write a sudoers file.
|
||||
##
|
||||
|
||||
##
|
||||
## Host alias specification
|
||||
##
|
||||
## Groups of machines. These may include host names (optionally with wildcards),
|
||||
## IP addresses, network numbers or netgroups.
|
||||
# Host_Alias WEBSERVERS = www1, www2, www3
|
||||
|
||||
##
|
||||
## User alias specification
|
||||
##
|
||||
## Groups of users. These may consist of user names, uids, Unix groups,
|
||||
## or netgroups.
|
||||
# User_Alias ADMINS = millert, dowdy, mikef
|
||||
|
||||
##
|
||||
## Cmnd alias specification
|
||||
##
|
||||
## Groups of commands. Often used to group related commands together.
|
||||
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
|
||||
# /usr/bin/pkill, /usr/bin/top
|
||||
# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff
|
||||
|
||||
##
|
||||
## Defaults specification
|
||||
##
|
||||
## You may wish to keep some of the following environment variables
|
||||
## when running commands via sudo.
|
||||
##
|
||||
## Locale settings
|
||||
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
|
||||
##
|
||||
## Run X applications through sudo; HOME is used to find the
|
||||
## .Xauthority file. Note that other programs use HOME to find
|
||||
## configuration files and this may lead to privilege escalation!
|
||||
# Defaults env_keep += "HOME"
|
||||
##
|
||||
## X11 resource path settings
|
||||
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
|
||||
##
|
||||
## Desktop path settings
|
||||
# Defaults env_keep += "QTDIR KDEDIR"
|
||||
##
|
||||
## Allow sudo-run commands to inherit the callers' ConsoleKit session
|
||||
# Defaults env_keep += "XDG_SESSION_COOKIE"
|
||||
##
|
||||
## Uncomment to enable special input methods. Care should be taken as
|
||||
## this may allow users to subvert the command being run via sudo.
|
||||
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
|
||||
##
|
||||
## Uncomment to use a hard-coded PATH instead of the user's to find commands
|
||||
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
##
|
||||
## Uncomment to send mail if the user does not enter the correct password.
|
||||
# Defaults mail_badpass
|
||||
##
|
||||
## Uncomment to enable logging of a command's output, except for
|
||||
## sudoreplay and reboot. Use sudoreplay to play back logged sessions.
|
||||
# Defaults log_output
|
||||
# Defaults!/usr/bin/sudoreplay !log_output
|
||||
# Defaults!/usr/local/bin/sudoreplay !log_output
|
||||
# Defaults!REBOOT !log_output
|
||||
|
||||
##
|
||||
## Runas alias specification
|
||||
##
|
||||
|
||||
##
|
||||
## User privilege specification
|
||||
##
|
||||
root ALL=(ALL) ALL
|
||||
|
||||
## Uncomment to allow members of group wheel to execute any command
|
||||
# %wheel ALL=(ALL) ALL
|
||||
|
||||
## Same thing without a password
|
||||
# %wheel ALL=(ALL) NOPASSWD: ALL
|
||||
|
||||
## Uncomment to allow members of group sudo to execute any command
|
||||
# %sudo ALL=(ALL) ALL
|
||||
|
||||
## Uncomment to allow any user to run sudo if they know the password
|
||||
## of the user they are running the command as (root by default).
|
||||
# Defaults targetpw # Ask for the password of the target user
|
||||
# ALL ALL=(ALL) ALL # WARNING: only use this together with 'Defaults targetpw'
|
||||
|
||||
## Read drop-in files from /etc/sudoers.d
|
||||
## (the '#' here does not indicate a comment)
|
||||
#includedir /etc/sudoers.d
|
1
buildroot-external/rootfs-overlay/etc/sudoers.d/mycroft
Normal file
1
buildroot-external/rootfs-overlay/etc/sudoers.d/mycroft
Normal file
@@ -0,0 +1 @@
|
||||
mycroft ALL=(ALL:ALL) NOPASSWD: ALL
|
@@ -0,0 +1,4 @@
|
||||
d /var/log/mycroft 700 mycroft mycroft
|
||||
d /opt/mycroft 755 mycroft mycroft
|
||||
d /opt/mycroft/skills 755 mycroft mycroft
|
||||
d /opt/mycroft/splash 755 mycroft mycroft
|
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"max_allowed_core_version": 19.2
|
||||
}
|
Binary file not shown.
@@ -0,0 +1 @@
|
||||
{"window_t": 0.1, "hop_t": 0.05, "buffer_t": 1.5, "sample_rate": 16000, "sample_depth": 2, "n_mfcc": 13, "n_filt": 20, "n_fft": 512}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,79 @@
|
||||
#if defined(__linux__)
|
||||
# if defined(__x86_64__) && defined(__LP64__)
|
||||
# include <x86_64-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__x86_64__) && defined(__ILP32__)
|
||||
# include <x86_64-linux-gnux32/python3.4m/pyconfig.h>
|
||||
# elif defined(__i386__)
|
||||
# include <i386-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__aarch64__) && defined(__AARCH64EL__)
|
||||
# include <aarch64-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__alpha__)
|
||||
# include <alpha-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
|
||||
# include <arm-linux-gnueabihf/python3.4m/pyconfig.h>
|
||||
# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
|
||||
# include <arm-linux-gnueabi/python3.4m/pyconfig.h>
|
||||
# elif defined(__hppa__)
|
||||
# include <hppa-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__ia64__)
|
||||
# include <ia64-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__m68k__) && !defined(__mcoldfire__)
|
||||
# include <m68k-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__mips_hard_float) && defined(_MIPSEL)
|
||||
# if _MIPS_SIM == _ABIO32
|
||||
# include <mipsel-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif _MIPS_SIM == _ABIN32
|
||||
# include <mips64el-linux-gnuabin32/python3.4m/pyconfig.h>
|
||||
# elif _MIPS_SIM == _ABI64
|
||||
# include <mips64el-linux-gnuabi64/python3.4m/pyconfig.h>
|
||||
# else
|
||||
# error unknown multiarch location for pyconfig.h
|
||||
# endif
|
||||
# elif defined(__mips_hard_float)
|
||||
# if _MIPS_SIM == _ABIO32
|
||||
# include <mips-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif _MIPS_SIM == _ABIN32
|
||||
# include <mips64-linux-gnuabin32/python3.4m/pyconfig.h>
|
||||
# elif _MIPS_SIM == _ABI64
|
||||
# include <mips64-linux-gnuabi64/python3.4m/pyconfig.h>
|
||||
# else
|
||||
# error unknown multiarch location for pyconfig.h
|
||||
# endif
|
||||
# elif defined(__or1k__)
|
||||
# include <or1k-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__powerpc__) && defined(__SPE__)
|
||||
# include <powerpc-linux-gnuspe/python3.4m/pyconfig.h>
|
||||
# elif defined(__powerpc64__)
|
||||
# if defined(__LITTLE_ENDIAN__)
|
||||
# include <powerpc64le-linux-gnu/python3.4m/pyconfig.h>
|
||||
# else
|
||||
# include <powerpc64-linux-gnu/python3.4m/pyconfig.h>
|
||||
# endif
|
||||
# elif defined(__powerpc__)
|
||||
# include <powerpc-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__s390x__)
|
||||
# include <s390x-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__s390__)
|
||||
# include <s390-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
|
||||
# include <sh4-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__sparc__) && defined(__arch64__)
|
||||
# include <sparc64-linux-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__sparc__)
|
||||
# include <sparc-linux-gnu/python3.4m/pyconfig.h>
|
||||
# else
|
||||
# error unknown multiarch location for pyconfig.h
|
||||
# endif
|
||||
#elif defined(__FreeBSD_kernel__)
|
||||
# if defined(__LP64__)
|
||||
# include <x86_64-kfreebsd-gnu/python3.4m/pyconfig.h>
|
||||
# elif defined(__i386__)
|
||||
# include <i386-kfreebsd-gnu/python3.4m/pyconfig.h>
|
||||
# else
|
||||
# error unknown multiarch location for pyconfig.h
|
||||
# endif
|
||||
#elif defined(__gnu_hurd__)
|
||||
# include <i386-gnu/python3.4m/pyconfig.h>
|
||||
#else
|
||||
# error unknown multiarch location for pyconfig.h
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,159 @@
|
||||
# Grammar for 2to3. This grammar supports Python 2.x and 3.x.
|
||||
|
||||
# Note: Changing the grammar specified in this file will most likely
|
||||
# require corresponding changes in the parser module
|
||||
# (../Modules/parsermodule.c). If you can't make the changes to
|
||||
# that module yourself, please co-ordinate the required changes
|
||||
# with someone who can; ask around on python-dev for help. Fred
|
||||
# Drake <fdrake@acm.org> will probably be listening there.
|
||||
|
||||
# NOTE WELL: You should also follow all the steps listed in PEP 306,
|
||||
# "How to Change Python's Grammar"
|
||||
|
||||
# Commands for Kees Blom's railroad program
|
||||
#diagram:token NAME
|
||||
#diagram:token NUMBER
|
||||
#diagram:token STRING
|
||||
#diagram:token NEWLINE
|
||||
#diagram:token ENDMARKER
|
||||
#diagram:token INDENT
|
||||
#diagram:output\input python.bla
|
||||
#diagram:token DEDENT
|
||||
#diagram:output\textwidth 20.04cm\oddsidemargin 0.0cm\evensidemargin 0.0cm
|
||||
#diagram:rules
|
||||
|
||||
# Start symbols for the grammar:
|
||||
# file_input is a module or sequence of commands read from an input file;
|
||||
# single_input is a single interactive statement;
|
||||
# eval_input is the input for the eval() and input() functions.
|
||||
# NB: compound_stmt in single_input is followed by extra NEWLINE!
|
||||
file_input: (NEWLINE | stmt)* ENDMARKER
|
||||
single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
|
||||
eval_input: testlist NEWLINE* ENDMARKER
|
||||
|
||||
decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
|
||||
decorators: decorator+
|
||||
decorated: decorators (classdef | funcdef)
|
||||
funcdef: 'def' NAME parameters ['->' test] ':' suite
|
||||
parameters: '(' [typedargslist] ')'
|
||||
typedargslist: ((tfpdef ['=' test] ',')*
|
||||
('*' [tname] (',' tname ['=' test])* [',' '**' tname] | '**' tname)
|
||||
| tfpdef ['=' test] (',' tfpdef ['=' test])* [','])
|
||||
tname: NAME [':' test]
|
||||
tfpdef: tname | '(' tfplist ')'
|
||||
tfplist: tfpdef (',' tfpdef)* [',']
|
||||
varargslist: ((vfpdef ['=' test] ',')*
|
||||
('*' [vname] (',' vname ['=' test])* [',' '**' vname] | '**' vname)
|
||||
| vfpdef ['=' test] (',' vfpdef ['=' test])* [','])
|
||||
vname: NAME
|
||||
vfpdef: vname | '(' vfplist ')'
|
||||
vfplist: vfpdef (',' vfpdef)* [',']
|
||||
|
||||
stmt: simple_stmt | compound_stmt
|
||||
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
|
||||
small_stmt: (expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt |
|
||||
import_stmt | global_stmt | exec_stmt | assert_stmt)
|
||||
expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) |
|
||||
('=' (yield_expr|testlist_star_expr))*)
|
||||
testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [',']
|
||||
augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' |
|
||||
'<<=' | '>>=' | '**=' | '//=')
|
||||
# For normal assignments, additional restrictions enforced by the interpreter
|
||||
print_stmt: 'print' ( [ test (',' test)* [','] ] |
|
||||
'>>' test [ (',' test)+ [','] ] )
|
||||
del_stmt: 'del' exprlist
|
||||
pass_stmt: 'pass'
|
||||
flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt
|
||||
break_stmt: 'break'
|
||||
continue_stmt: 'continue'
|
||||
return_stmt: 'return' [testlist]
|
||||
yield_stmt: yield_expr
|
||||
raise_stmt: 'raise' [test ['from' test | ',' test [',' test]]]
|
||||
import_stmt: import_name | import_from
|
||||
import_name: 'import' dotted_as_names
|
||||
import_from: ('from' ('.'* dotted_name | '.'+)
|
||||
'import' ('*' | '(' import_as_names ')' | import_as_names))
|
||||
import_as_name: NAME ['as' NAME]
|
||||
dotted_as_name: dotted_name ['as' NAME]
|
||||
import_as_names: import_as_name (',' import_as_name)* [',']
|
||||
dotted_as_names: dotted_as_name (',' dotted_as_name)*
|
||||
dotted_name: NAME ('.' NAME)*
|
||||
global_stmt: ('global' | 'nonlocal') NAME (',' NAME)*
|
||||
exec_stmt: 'exec' expr ['in' test [',' test]]
|
||||
assert_stmt: 'assert' test [',' test]
|
||||
|
||||
compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated
|
||||
if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
|
||||
while_stmt: 'while' test ':' suite ['else' ':' suite]
|
||||
for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]
|
||||
try_stmt: ('try' ':' suite
|
||||
((except_clause ':' suite)+
|
||||
['else' ':' suite]
|
||||
['finally' ':' suite] |
|
||||
'finally' ':' suite))
|
||||
with_stmt: 'with' with_item (',' with_item)* ':' suite
|
||||
with_item: test ['as' expr]
|
||||
with_var: 'as' expr
|
||||
# NB compile.c makes sure that the default except clause is last
|
||||
except_clause: 'except' [test [(',' | 'as') test]]
|
||||
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
|
||||
|
||||
# Backward compatibility cruft to support:
|
||||
# [ x for x in lambda: True, lambda: False if x() ]
|
||||
# even while also allowing:
|
||||
# lambda x: 5 if x else 2
|
||||
# (But not a mix of the two)
|
||||
testlist_safe: old_test [(',' old_test)+ [',']]
|
||||
old_test: or_test | old_lambdef
|
||||
old_lambdef: 'lambda' [varargslist] ':' old_test
|
||||
|
||||
test: or_test ['if' or_test 'else' test] | lambdef
|
||||
or_test: and_test ('or' and_test)*
|
||||
and_test: not_test ('and' not_test)*
|
||||
not_test: 'not' not_test | comparison
|
||||
comparison: expr (comp_op expr)*
|
||||
comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
|
||||
star_expr: '*' expr
|
||||
expr: xor_expr ('|' xor_expr)*
|
||||
xor_expr: and_expr ('^' and_expr)*
|
||||
and_expr: shift_expr ('&' shift_expr)*
|
||||
shift_expr: arith_expr (('<<'|'>>') arith_expr)*
|
||||
arith_expr: term (('+'|'-') term)*
|
||||
term: factor (('*'|'@'|'/'|'%'|'//') factor)*
|
||||
factor: ('+'|'-'|'~') factor | power
|
||||
power: atom trailer* ['**' factor]
|
||||
atom: ('(' [yield_expr|testlist_gexp] ')' |
|
||||
'[' [listmaker] ']' |
|
||||
'{' [dictsetmaker] '}' |
|
||||
'`' testlist1 '`' |
|
||||
NAME | NUMBER | STRING+ | '.' '.' '.')
|
||||
listmaker: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] )
|
||||
testlist_gexp: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] )
|
||||
lambdef: 'lambda' [varargslist] ':' test
|
||||
trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
|
||||
subscriptlist: subscript (',' subscript)* [',']
|
||||
subscript: test | [test] ':' [test] [sliceop]
|
||||
sliceop: ':' [test]
|
||||
exprlist: (expr|star_expr) (',' (expr|star_expr))* [',']
|
||||
testlist: test (',' test)* [',']
|
||||
dictsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) |
|
||||
(test (comp_for | (',' test)* [','])) )
|
||||
|
||||
classdef: 'class' NAME ['(' [arglist] ')'] ':' suite
|
||||
|
||||
arglist: (argument ',')* (argument [',']
|
||||
|'*' test (',' argument)* [',' '**' test]
|
||||
|'**' test)
|
||||
argument: test [comp_for] | test '=' test # Really [keyword '='] test
|
||||
|
||||
comp_iter: comp_for | comp_if
|
||||
comp_for: 'for' exprlist 'in' testlist_safe [comp_iter]
|
||||
comp_if: 'if' old_test [comp_iter]
|
||||
|
||||
testlist1: test (',' test)*
|
||||
|
||||
# not used in grammar, but may appear in "node" passed from Parser to Compiler
|
||||
encoding_decl: NAME
|
||||
|
||||
yield_expr: 'yield' [yield_arg]
|
||||
yield_arg: 'from' test | testlist
|
@@ -0,0 +1,28 @@
|
||||
# Copyright 2006 Google, Inc. All Rights Reserved.
|
||||
# Licensed to PSF under a Contributor Agreement.
|
||||
|
||||
# A grammar to describe tree matching patterns.
|
||||
# Not shown here:
|
||||
# - 'TOKEN' stands for any token (leaf node)
|
||||
# - 'any' stands for any node (leaf or interior)
|
||||
# With 'any' we can still specify the sub-structure.
|
||||
|
||||
# The start symbol is 'Matcher'.
|
||||
|
||||
Matcher: Alternatives ENDMARKER
|
||||
|
||||
Alternatives: Alternative ('|' Alternative)*
|
||||
|
||||
Alternative: (Unit | NegatedUnit)+
|
||||
|
||||
Unit: [NAME '='] ( STRING [Repeater]
|
||||
| NAME [Details] [Repeater]
|
||||
| '(' Alternatives ')' [Repeater]
|
||||
| '[' Alternatives ']'
|
||||
)
|
||||
|
||||
NegatedUnit: 'not' (STRING | NAME [Details] | '(' Alternatives ')')
|
||||
|
||||
Repeater: '*' | '+' | '{' NUMBER [',' NUMBER] '}'
|
||||
|
||||
Details: '<' Alternatives '>'
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user