Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/infrastructure/lipsum/code/PhutilPHPCodeSnippetContextFreeGrammar.php
12256 views
1
<?php
2
3
final class PhutilPHPCodeSnippetContextFreeGrammar
4
extends PhutilCLikeCodeSnippetContextFreeGrammar {
5
6
protected function buildRuleSet() {
7
return array_merge(parent::buildRuleSet(), $this->getClassRuleSets());
8
}
9
10
protected function getStartGrammarSet() {
11
$start_grammar = parent::getStartGrammarSet();
12
13
$start_grammar['start'][] = '[classdecl]';
14
$start_grammar['start'][] = '[classdecl]';
15
16
return $start_grammar;
17
}
18
19
protected function getExprGrammarSet() {
20
$expr = parent::getExprGrammarSet();
21
22
$expr['expr'][] = 'new [classname]([funccallparam])';
23
24
$expr['expr'][] = '[classname]::[funccall]';
25
26
return $expr;
27
}
28
29
protected function getVarNameGrammarSet() {
30
$varnames = parent::getVarNameGrammarSet();
31
32
foreach ($varnames as $vn_key => $vn_val) {
33
foreach ($vn_val as $vv_key => $vv_value) {
34
$varnames[$vn_key][$vv_key] = '$'.$vv_value;
35
}
36
}
37
38
return $varnames;
39
}
40
41
protected function getFuncNameGrammarSet() {
42
return $this->buildGrammarSet('funcname',
43
array_mergev(get_defined_functions()));
44
}
45
46
protected function getMethodCallGrammarSet() {
47
return $this->buildGrammarSet('methodcall',
48
array(
49
'$this->[funccall]',
50
'self::[funccall]',
51
'static::[funccall]',
52
'[varname]->[funccall]',
53
'[classname]::[funccall]',
54
));
55
}
56
57
}
58
59